package cn.zhentao.config;

import cn.zhentao.interceptor.PermissionInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Spring MVC配置
 * 注册拦截器、静态资源映射等
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Autowired
    private PermissionInterceptor permissionInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册权限拦截器
        registry.addInterceptor(permissionInterceptor)
                .addPathPatterns("/api/**") // 拦截所有API接口
                .excludePathPatterns(
                        "/api/users/login", // 放行登录接口
                        "/api/users/register", // 放行注册接口
                        "/api/users/load/**" // 放行用户信息加载接口
                );
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns(
                    "http://localhost:*",      // 本地开发服务器（任意端口）
                    "http://127.0.0.1:*",     // 本地开发服务器（任意端口）
                    "https://localhost:*",     // HTTPS本地开发服务器
                    "https://127.0.0.1:*"     // HTTPS本地开发服务器
                )
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600);
    }
}
